Computer programs frequently communicate over a network using a specific protocol. When implementing such communications protocols it is important to verify that the implementation is correct, and that the program communicates correctly. A server program is often implemented to respond to specific queries over the network according to such a protocol. When testing the implementation of a server program, testing will often comprise sending the server a number of requests, and then verifying that the answer sent by the server is correct.
It is often convenient to write a custom program to send these requests and verify the answers as a significant volume and variety of requests must be sent to properly test the server software with respect to a great number of different requests, and to test how the implementation performs under heavy loads.
When writing such programs using a conventional programming language such as Java or C++, the resulting programs can often be very repetitive, as the code generating the different requests may be repeated a great number of times with small variations. Furthermore, the code can be very difficult to read and very long, as the code needed to generate and verify the requests can require long functional statements in these languages.